package picol.model.asa.expr;

import picol.model.asa.inst.ASAInstPicoL;
import picol.model.memory.TableSymbole;

/**
 * Classe de gestion de l'assignation Quotient
 * @author Aurélien Marcel - Julien Sanderson
 */
public class ASAExprAssignationQuotient extends ASAExprAffect {

    public ASAExprAssignationQuotient(ASAExpr _expr1, ASAExpr _expr2) {
        super(_expr1, _expr2);
    }

    @Override
    public String getLabelExplorateur() {
        return "ASSIGNATION QUOTIENT";
    }

    @Override
    public int evalue() {

        String ident = "" + expr1.getToken();
        int diviseur = 0;
        int resultat = 0;

        if ((diviseur = expr2.evalue()) != 0) {
            resultat = (expr1.evalue() / expr2.evalue());
        } else {
            // renvoie une exception si l'utilisateur tente une division par zéro
            throw new RuntimeException("Division by zero not allowed");
        }

        for (TableSymbole table : ASAInstPicoL.listTblSym) {
            if (table.existeVariable(ident)) {
                table.modifierVariable(ident, new ASAExprEntier(resultat));
            }
        }

        return resultat;
    }
}
